home *** CD-ROM | disk | FTP | other *** search
/ Mac Format 1994 October / Macformat17.cdr / Shareware City / Developers / Incognito 1.2ß2 src Folder / Incognito 1.2ß2 ƒ / Incog 1.2b2 ReadME < prev    next >
Text File  |  1994-06-30  |  6KB  |  58 lines

  1. Hi there,
  2.  
  3. This is Incognito 1.2b2, the sequel to the much–used Incognito 1.1.4. Many things in it have changed, though the core product is still the same. It still does what it does, but now you have even more control over what Incognito does. Here is a list of differences:
  4.  
  5. (1) in the control panel, you can enter a new gestalt selector code. The gestalt selector is a four–character code that Incognito uses to store its information. The reason this is here is that Quark XPress™®© checked to see if Incognito was running by looking for its selector. Well, instead of me updating Incognito, you can type in a new selector.
  6.  
  7. Note that this shouldn’t be used too often, and you should be careful when you use this. Apple reserves all selector codes that aren’t letters, so it’s probably safe to use '1234' as a code. 
  8.  
  9. Warning: if you choose a code that another init/program uses, bad things will happen. Use the gestalt DA or dcmd to find which gestalt selectors are being used, and avoid them.
  10.  
  11. (2) In the control panel, there’s an “Edit” button. This brings up a dialog that has six checkboxes, with a few categories. But first, an explanation of how Incognito works.
  12.  
  13. When a program registers on a network, it has to register at least two things: a type, and a name.
  14.  
  15. The type is a descriptive word which has some relation to the function of the program. File Sharing, for example, has the type “AFPServer” while LaserWriters use the type “LaserWriter”.
  16.  
  17. The name is generally something that the user can see, and is sometimes user–settable. With File Sharing, the name is the string that shows up when you click on the AppleShare icon in the chooser (the remote mac’s name), and the LaserWriter’s name is the one you see when you click on the LaserWriter icon.
  18.  
  19. Both names and types are arbitrary; the name is generally used only for user feedback, while the type allows other programs to find specific types of devices. AppleShare looks for the type “AFPServer” across the network, and assumes that anything of that type is a file server. Likewise, the LaserWriter driver looks for entities of type “LaserWriter”.
  20.  
  21. Many programs use the names/types as a mechanism for copy–protection, because it’s the simplest way to see if another copy of the program is running. The program registers its name/type, and at the same times looks across the network to see if there are any other entities of the same name/type. If there is another match, the program knows that there’s another copy of itself running, and (usually) quits.
  22.  
  23. What Incognito lets you do is intercept programs at either the registration or lookup points of this process. Basically, you can either mangle the name/type that the program registers, or mangle the name/type that the program uses to lookup. This mangling makes it impossible for a program to find itself, allowing you to run multiple instances of the same program.
  24.  
  25. As an example, lets say that NetWriter is copy protected, and its serial number is 0001. At startup, NetWriter registers itself on the network as so:
  26.  
  27. Name: 0001
  28. Type: NetWriter
  29.  
  30. NetWriter then searches the network for other entities whose type is “NetWriter”. If NetWriter finds such an entity on the network, it then looks at the name of that entity. If the name of the entity is the same as the name it registered, NetWriter barfs with some kind of duplicate program message.
  31.  
  32. Incognito can work against this process in two ways, which are represented in the “Edit…” dialog. Incog can mangle registrations (which means that other NetWriters can’t see the current one) or Incog can mangle lookups (which means that the NetWriter can’t find other NetWriters). By default, Incognito mangles lookups.
  33.  
  34. Why would you want to mangle registrations? The only reason would be if you were running two copies of NetWriter on the same machine; since the name and type of NetWriter are the same, AppleTalk would return an error.
  35.  
  36. The other option, Unregister, is only useful when Register is enabled. What Unregister does is this: say a name/type was originally 0001/NetWriter. It was mangled into XXXX/ZZZZZZZZZ. When unregister is enabled, the name/type gets restored when a program unregisters itself.
  37.  
  38. Why? Some programs (like Quark XPress™®©) use the original name to deregister themselves, while some programs use the mangled name to deregister. Unfortunately, it’s impossible to tell how a program behaves in advance. However, if the register option is set, the unregister option isn’t set and the program bombs when you quit, turn on Unregister.
  39.  
  40. As an example, say we enabled register for NetWriter. Netwriter thinks its registering 0001/NetWriter, but instead registers XXXX/ ZZZZZZZZZ. When NetWriter tries to unregister itself, it attempts to unregister 0001/NetWriter. This is bad, since what it’s really trying to do is unregister XXXX/ZZZZZZZZZ. If you enable Unregister, NetWriter will do the right thing (ie: unregister XXXX/ZZZZZZZZZ).
  41.  
  42. The async buttons do something that is relatively esoteric. When Incognito changes names it leaves the names around. So when NetWriter registers 0001/NetWriter and Incog changes the registration information to XXXX/ZZZZZZZZZ, the new name/type is left in the information that the program used to register.
  43.  
  44. A clever program could check this leftover information to see if it was the same as it was going in. If you disable “Async”, Incognito restores the information after the action,  which makes this checking impossible. There is a penalty, however: clicking this makes the call synchronous, which means that your Mac will do nothing until it finishes. In the case of a Lookup, the delay might be substantial.
  45.  
  46. Technical explanation: incog changes the entityName in the parameter block, but does not by default restore the original entity. Programs can examine the entityName after the NBPRegister to see if the entity is the expected value. If async is unchecked, Incog forces the NBP action to go synchronous, and resets the entityName after the trap completes. Completion routines are called.
  47.  
  48. The defaults are "Lookup enabled" and "Async". This should work for most programs, and are the defaults for any previous Incognito prefs files.
  49.  
  50. Known problems:
  51.  
  52. The init should work under System 6, but I don’t have anything that can run System 6 so I can’t check. The cdev should give a “cannot be used with this system” error under 6.
  53.  
  54. Enjoy!
  55.  
  56. Manuel veloso
  57. 70365, 1426
  58. veloso@husc.harvard.edu